package com.masita.logica;

import java.sql.*;
import java.util.Vector;

public class Anotacion {

	private int id_anotacion;
	private int id_compra;
	private String texto;
	private String fecha;
	
	public Anotacion(int id_a, int id_c, String tex, String f){
		this.id_anotacion = id_a;
		this.id_compra = id_c;
		this.texto = new String(tex);
		this.fecha = new String(f);		
	}	
	
	// METODO GET DE LA CLASE *****************************
	public String getFecha(){
		return fecha;
	}

	public int getIdAnotacion(){
		return id_anotacion;
	}

	public int getIdCompra(){
		return id_compra;
	}

	public String getTexto(){
		return texto;
	}

	// METODO SET DE LA CLASE *****************************
	public void setFecha(String string){
		fecha = new String(string);
	}

	public void setIdCompra(int i){
		id_compra = i;
	}

	public void setTexto(String string){
		texto = new String(string);
	}
	
	// METODO ESTATICOS DE LA CLASE ***********************
	public static Vector getAnotacionesPendientes(){
		Vector anotaciones = null;
		try{
			Statement st = Conexion.getStatement();
			String sentencia = "SELECT * FROM anotacion WHERE id_compra = 0";
			ResultSet rs = st.executeQuery(sentencia);
			while( rs.next() ){
				if( anotaciones == null ) anotaciones = new Vector();
				anotaciones.addElement(new Anotacion(rs.getInt("id_anotacion"),
										   rs.getInt("id_compra"),
										   rs.getString("texto"),
										   rs.getString("fecha")));
			}
		}
		catch(SQLException e){
			System.out.println(e.getMessage());
		}
		return anotaciones;
	}

	public static Vector getAnotacionesCompra(int id_a){
		Vector anotaciones = null;
		try{
			Statement st = Conexion.getStatement();
			String sentencia = "SELECT * FROM anotacion WHERE id_anotacion = "+id_a;
			ResultSet rs = st.executeQuery(sentencia);
			while( rs.next() ){
				if( anotaciones == null ) anotaciones = new Vector();
				anotaciones.addElement(new Anotacion(rs.getInt("id_anotacion"),
										   rs.getInt("id_compra"),
										   rs.getString("texto"),
										   rs.getString("fecha")));
			}
		}
		catch(SQLException e){
			System.out.println(e.getMessage());
		}
		return anotaciones;
	}
	
	// METODO SETEAR LAS COMPRAS **************************
	public static void setComprados(Vector anotaciones, int id){
		for( int i=0; i<anotaciones.size(); i++){
			Anotacion anot = (Anotacion)anotaciones.elementAt(i);
			anot.setIdCompra(id);
			anot.guardarDatos();
		}
	}
	
	// METODO GUARDAR DE LA CLASE *************************
	public int guardarDatos(){
		try{
			Statement st = Conexion.getStatement();
			String sentencia;
			
			if( this.id_anotacion == 0 ){
				sentencia = "INSERT INTO anotacion VALUES(0,"+this.id_compra+",'"+
							this.texto+"','"+this.fecha+"')";
				st.executeUpdate(sentencia);
				ResultSet rs = st.getGeneratedKeys();
				if( rs.next() ) this.id_anotacion = rs.getInt(1);
			}
			else{
				sentencia = "UPDATE anotacion SET id_compra = "+this.id_compra+
							", texto = '"+this.texto+
							"', fecha = '"+this.fecha+"' "+
							"WHERE id_anotacion = "+this.id_anotacion;
				st.executeUpdate(sentencia);
			}			
		}
		catch(SQLException e){
			System.out.println(e.getMessage());
		}
		return this.id_anotacion;
	}
	
	// METODO ELIMINAR DE LA CLASE ************************
	public boolean eliminar(){
		try{
			if( this.id_anotacion == 0 ) return false;
			
			Statement st = Conexion.getStatement();
			String sentencia = "DELETE FROM anotacion "+							   "WHERE id_anotacion = "+this.id_anotacion;
			st.executeUpdate(sentencia);
			this.id_anotacion = 0;
			return true; 
		}
		catch(SQLException e){
			System.out.println(e.getMessage());
		}
		return false;
	}

}
